# -*- coding:utf-8 -*-

# 【项目二】高级猜数字
#
# 制作交互性强、容错率高的猜数字游戏程序。
#
# 要求：
#
# 为猜数字游戏增加记录玩家成绩的功能，包括玩家用户名、玩的次数和平均猜中的轮数等；
# 如果记录里没有玩家输入的用户名，就新建一条记录，否则在原有记录上更新数据；
# 对玩家输入做检测，判定输入的有效性，并保证程序不会因异常输入而出错；
# 将游戏打包为 exe 文件。（可选）

from random import randint
import os

print "请输入用户名："
user_name = raw_input()
user_list = []
if os.path.exists('user.txt'):
    f = open('user.txt','r+')
    user_list = f.readlines()
    f.close()

rounds = 0
avg_count = 0.0
counts = 0
count = 0
flag = "go"
temp = 0

for i in range(0,len(user_list)):
    user = user_list[i].split()
    if user_name == user[0]:
        print '欢迎回来%s,祝你游戏愉快！\n' %(user_name)
        rounds = int(user[1])
        avg_count = float(user[3])
        counts = int(user[2])
        temp = i
        user_list.pop(temp)


while flag == "go":
    print '开始猜数字游戏'
    print '这是第',rounds,'轮游戏，每轮最多猜十次'
    #生成随机数字
    target = randint(1,100)
    #比较数字
    bingo = False
    counts += count
    count = 0
    while bingo == False:
        print '请输入你猜的整数'
        #这里应该对用户输入进行
        num = raw_input()
        if not(num.isdigit() and int(num) > 0 and int(num) < 100):
            print '请输入100以内的数字'
            continue
        num = int(num)
        count += 1
        if num > target:
            print '你猜的大了'
            continue
        elif num < target:
            print '你猜的小了'
            continue
        else:
            print '你猜对了,答案就是%d' % (num)
            bingo = True
            rounds += 1
            counts += count
            avg_count = float(counts) / float(rounds)
            print '你猜了%d轮，平均%.1f次猜中' % (rounds, avg_count)
            print '输入"go"再玩一次，否则退出游戏\n'
            flag = raw_input()
            print flag


result = "%s %d %d %.1f \n" %(user_name, rounds, counts, avg_count)
user_list.append(result)

f = open('user.txt','w')
user_list = f.writelines(user_list)
f.close()